
// 数的范围：
// 给定一个按照升序排列的长度为 n 的整数数组，以及 q 个查询。

// 对于每个查询，返回一个元素 k 的起始位置和终止位置（位置从 0 开始计数）。

// 如果数组中不存在该元素，则返回 -1 -1。

// 输入格式
// 第一行包含整数 n 和 q，表示数组长度和询问个数。

// 第二行包含 n 个整数（均在 1∼10000 范围内），表示完整数组。

// 接下来 q 行，每行包含一个整数 k，表示一个询问元素。

// 输出格式
// 共 q 行，每行包含两个整数，表示所求元素的起始位置和终止位置。

// 如果数组中不存在该元素，则返回 -1 -1。

// 数据范围
// 1≤n≤100000
// 1≤q≤10000
// 1≤k≤10000
// 输入样例：
// 6 3
// 1 2 2 3 3 4
// 3
// 4
// 5
// 输出样例：
// 3 4
// 5 5
// -1 -1

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 100010;
int arr[N];
int n, q;

int main(void)
{
    cin >> n >> q;
    for (int i = 0; i < n; i++)
        cin >> arr[i];

    while (q--)
    {
        int target = 0;
        cin >> target;

        int left = 0, right = n - 1;
        while (left < right)
        {
            int mid = left + right >> 1;
            if (arr[mid] >= target)
                right = mid;
            else
                left = mid + 1;
        }

        if (arr[left] != target)
            cout << -1 << ' ' << -1 << endl;
        else
        {
            int ans1 = left, ans2 = 0;
            left = 0, right = n - 1;
            while (left < right)
            {
                int mid = left + right + 1 >> 1;
                if (arr[mid] <= target)
                    left = mid;
                else
                    right = mid - 1;
            }
            ans2 = left;
            cout << ans1 << ' ' << ans2 << endl;
        }
    }

    return 0;
}